package com.jlf.core.engine.server;

import com.jlf.core.engine.domain.SchemaFieldDO;
import com.jlf.core.engine.domain.SchemaIndexDO;
import com.jlf.core.engine.entity.index.EditIndexWrapper;
import com.jlf.core.engine.query.SchemaIndexQueryInput;
import com.jlf.core.output.ListResultWrapper;

import java.util.List;

/**
 * 文件注释
 *
 * @author wujr
 * 2023/7/15
 * @version 1.0
 * 【变更历史】
 * [wujr 2023/7/15 1.0 新增]
 */
public interface SchemaIndexServer {
    /**
     * 新增模型的索引
     * @param record 索引信息
     * @param schemaFields 索引所属模型的字段列表
     * @return 索引对象
     * @throws Exception 新增失败，抛出异常
     */
    SchemaIndexDO add(SchemaIndexDO record, List<SchemaFieldDO> schemaFields) throws Exception;

    /**
     * 编辑索引信息
     * @param wrapper 索引的参数
     * @throws Exception 编辑失败，抛出异常
     */
    void edit(EditIndexWrapper wrapper) throws Exception;
    /**
     * 删除索引
     * @param record 索引对象
     */
    void delete(SchemaIndexDO record);
    /**
     * 查询模型索引
     * @param input 查询条件
     * @param pageNo 分页索引，从1开始
     * @param pageSize 分页记录数量，0表示不分页
     * @return 索引列表
     */
    ListResultWrapper<SchemaIndexDO> query(SchemaIndexQueryInput input, Integer pageNo, Integer pageSize);
}
